package vip.zhenzicheng.algorithm.leetcode.array;

/**
 * <a href="https://leetcode.cn/problems/container-with-most-water/">盛最多水的容器 [中等]</a>
 *
 * @author zhenzicheng
 * @date 2022-06-16 09:17
 */
public class ContainerWithMostWater_11 {

  // public int maxArea(int[] height) {
  //   int i = 0, j = height.length - 1; // 定义左右双指针
  //   int maxWater = 0; // 最多的水
  //   while (i < j) {
  //     if (height[i] < height[j]) {
  //       maxWater = Math.max(maxWater, (j - i) * height[i]);
  //       i++;
  //     } else {
  //       maxWater = Math.max(maxWater, (j - i) * height[j]);
  //       j--;
  //     }
  //   }
  //   return maxWater;
  // }

  /**
   * 桶面积定义取决于短板！
   * 移动长板有可能不变或者变小
   * 移动短板可能会不变或者变大！
   */
  public int maxArea(int[] height) {
    int i = 0, j = height.length - 1; // 定义左右双指针
    int maxWater = 0; // 最多的水
    while (i < j) {
      maxWater = height[i] < height[j] ? Math.max(maxWater, (j - i) * height[i++]) : Math.max(maxWater, (j - i) * height[j--]);

    }
    return maxWater;
  }
}
